import { createRouter, createWebHistory } from 'vue-router'
import routes from './routes'
import store from '@/store'
import { getLoginUserInfo } from '@/api/user'


const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes
})


//每次跳转路由之前
router.beforeEach((to, from, next) => {

  // 需要管理员验证权限的路由
  const managerGrant = ['/manager']


  // 需要用户权限的路由
  const userGrant = ['']

  // 无需验证权限的路由
  const noGrant = ['/login']


  // 如果是无需验证的路由，直接直接通过
  if (noGrant.includes(to.path)) {
    //清除本地存储的登录信息
    store.commit('clearLoginInfo')
    return next()
  }


  // 判断本地是否有登录用户信息
  let loginUser = store.getters.getloginInfo
  let token = store.getters.getToken
  if (!loginUser && !token) {
    return next('/login')
  }
  //每次进行路由跳转前，进行Token验证（获取登录信息）,判断令是否有效
  getLoginUserInfo().then(res => {
    //Token有效
    if (res.flag) {
      //存储登录信息
      store.commit('setloginInfo', res.data)
      var loginUser = store.getters.getloginInfo
      //管理员畅行无阻
      if (loginUser.role === 'admin') {
        console.log('最高权限')
        next()
        //不是管理员，想越权，没门！
      } else if (managerGrant.includes(to.path)) {
        next("/403")
      }
      console.log('已经授权')
      next()
      //Token失效
    } else {
      next('/login')
    }
  })
})

export default router
